import router from '@/router'
import store from '@/store'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

// 白名单页面 （不需要登录就可以看的页面）
// 比如 登录，注册，404页面等等
const whiteList = ['/login', '/register', '/404']

// 虚拟进度条 -- nprogress -- 去看他的网站，或者去百度搜索 nprogress的 vue使用场景
router.beforeEach((to, from, next) => {
  // 前置路由守卫
  // console.log('前置守卫', to, from)
  NProgress.start()
  // next()
  // 在路由守卫这里，通过用户有没有登录过，来做一些页面自动跳转
  // 有没有登录过 -- 通过token有没有来判断
  // console.log(store.state.user.token)
  if (store.state.user.token) {
    // 用户已经登录过了
    // if (to.path === '/login' || to.path === '/404') {
    if (whiteList.includes(to.path)) {
      next('/')
      NProgress.done()
    } else {
      // 核心代码都是放在这个if分支里面：  用户登录过，然后访问的都是一些非白名单页面
      // 发起请求，获取用户信息。 不要在这个位置写具体的请求，而是要把请求放到vuex的actions里面去
      // 在这里调用actions即可
      store.dispatch('user/getUserInfoAction')

      next()
    }
  } else {
    // 用户没有登录过
    // if (to.path === '/login') {
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next('/login')
      NProgress.done()
    }
  }
})

router.afterEach(() => {
  // 后置路由守卫
  // console.log('后置守卫')
  NProgress.done()
})
